import React from 'react';
import axios from 'axios';
import {BrowserRouter as Router} from 'react-router-dom';
import pubsub from 'pubsub-js'
import qs from 'qs';

// 添加一个请求时的拦截器
axios.interceptors.request.use(function (config) {

    //请求发出去之前做的事
    // console.log('请求前的拦截');

    //抓取本地token，携带在请求头里
    let user = window.localStorage.getItem('user');
    user = user ? qs.parse(user) : '';
    // console.log('plugins_axios',typeof user.token, user);
    config.headers={'token': user.token};
    // config.headers={'token': 5109990299432117};

    //loading显示
    pubsub.publish('view_loader',true)

    return config;//撒手
}, function (error) {
    // 在错误请求发出去之前，做的事

    return Promise.reject(error);
});


// 添加一个响应时的拦截器
axios.interceptors.response.use(function (response) {
    //响应回来 ->   做点事 -> 请求方
    // console.log('响应后的拦截');

    // 如果token错误或失效 跳转登录

    //loading消失
    pubsub.publish('view_loader',false)

    let router=new Router();//实例化 BrowserRouter

    if (response.data.err === 2 && !router.history.location.pathname.includes('/login')) {
        console.log('token 失败 跳转到login',router);

        window.location.href='/login?path='+router.history.location.pathname;//history模式

        /*router.history.push({  //hash 模式可以，history模式有问题
          pathname: '/login',
          search: "path="+router.history.location.pathname
        })*/

    }

    return response;//返回给请求方

}, function (error) {
    //  //响应回来 ->   处理错误信息 -> 请求方
    return Promise.reject(error);

});

// window.axios = axios; // 使用:  无需导入 window.axios | axios   ×
// React.Component.prototype.axios = axios; //使用: 无需导入 this.axios
export default axios; // 使用:  import axios from './plugins/axios'